﻿ALTER PROCEDURE [dbo].[InsertZhurnalObrasch]
		( @D_OBRASCH datetime,
          @V_OBRASCH datetime,
          @K_RAB int,
          @D_KONS datetime,
          @V_KONS datetime,
          @F_PROVEDENA bit,
          @K_PRIZN int,
          @K_KPO int,
          @K_OBRASCH int,
          @K_RAB_ZAPOL int,
          @N_FA varchar(50),
          @N_IM varchar(50),
          @N_OT varchar(50),
		  @C_NPP int OUTPUT,		  
		  @K_ZHURNAL_OBRASCH int OUTPUT)
AS
-- Функция вставки новой записи в журнал ображения
BEGIN
	SET NOCOUNT ON;

	BEGIN TRANSACTION
	
	-- получение следующего номера журнала, но только в том случае если он не задан вручную
	if @C_NPP = null
	begin 
		select @C_NPP = (select max(C_NPP) + 1 from b_zhurnal_obrasch where YEAR(D_OBRASCH) = YEAR(GETDATE()))
	end
	
	-- вставка новых записей
	INSERT INTO b_zhurnal_obrasch
    (C_NPP, D_OBRASCH, V_OBRASCH, K_RAB, D_KONS, V_KONS, F_PROVEDENA, K_PRIZN, K_KPO, K_OBRASCH, K_RAB_ZAPOL, N_FA, N_IM, N_OT)
	VALUES     
	(@C_NPP,@D_OBRASCH,@V_OBRASCH,@K_RAB,@D_KONS,@V_KONS,@F_PROVEDENA,@K_PRIZN,@K_KPO,@K_OBRASCH,@K_RAB_ZAPOL,@N_FA,@N_IM,@N_OT)
	
	-- возвращаение нового полученного кода журнала обращения
	SELECT @K_ZHURNAL_OBRASCH = SCOPE_IDENTITY();
	

	COMMIT TRANSACTION 
END
